Next: Text Coding, Previous: Specify Coding, Up: International [Contents][Index]
Once Emacs has chosen a coding system for a buffer, it stores
that coding system in buffer-file-coding-system.
That makes it the default for operations that write from this
buffer into a file, such as save-buffer and
write-region. You can specify a different coding
system for further file output from the buffer using
set-buffer-file-coding-system (see Text Coding).
You can insert any character Emacs supports into any Emacs
buffer, but most coding systems can only handle a subset of these
characters. Therefore, it’s possible that the characters
you insert cannot be encoded with the coding system that will be
used to save the buffer. For example, you could visit a text file
in Polish, encoded in iso-8859-2, and add some
Russian words to it. When you save that buffer, Emacs cannot use
the current value of buffer-file-coding-system,
because the characters you added cannot be encoded by that coding
system.
When that happens, Emacs tries the most-preferred coding
system (set by M-x prefer-coding-system or M-x
set-language-environment). If that coding system can safely
encode all of the characters in the buffer, Emacs uses it, and
stores its value in buffer-file-coding-system.
Otherwise, Emacs displays a list of coding systems suitable for
encoding the buffer’s contents, and asks you to choose one
of those coding systems.
If you insert the unsuitable characters in a mail message, Emacs behaves a bit differently. It additionally checks whether the most-preferred coding system is recommended for use in MIME messages; if not, it informs you of this fact and prompts you for another coding system. This is so you won’t inadvertently send a message encoded in a way that your recipient’s mail software will have difficulty decoding. (You can still use an unsuitable coding system if you enter its name at the prompt.)
When you send a mail message (see Sending Mail), Emacs has
four different ways to determine the coding system to use for
encoding the message text. It tries the buffer’s own value
of buffer-file-coding-system, if that is
non-nil. Otherwise, it uses the value of
sendmail-coding-system, if that is
non-nil. The third way is to use the default coding
system for new files, which is controlled by your choice of
language environment, if that is non-nil. If all of
these three values are nil, Emacs encodes outgoing
mail using the Latin-1 coding system.
Next: Text Coding, Previous: Specify Coding, Up: International [Contents][Index]